package com.kotlinvben.exception


/**
 * 角色相关异常
 */
sealed class RoleException(
    override val code: Int,
    override val message: String
) : BusinessException(code, message) {
    companion object {
        const val ROLE_NOT_FOUND = 2001
        const val ROLE_CODE_ALREADY_EXISTS = 2002
        const val ROLE_NAME_ALREADY_EXISTS = 2003
        const val ROLE_DISABLED = 2004
        const val ROLE_IN_USE = 2005
    }
}

/**
 * 角色不存在异常
 */
class RoleNotFoundException : RoleException(
    code = ROLE_NOT_FOUND,
    message = "角色不存在"
)

/**
 * 角色编码已存在异常
 */
class RoleCodeAlreadyExistsException : RoleException(
    code = ROLE_CODE_ALREADY_EXISTS,
    message = "角色编码已存在"
)

/**
 * 角色名称已存在异常
 */
class RoleNameAlreadyExistsException : RoleException(
    code = ROLE_NAME_ALREADY_EXISTS,
    message = "角色名称已存在"
)

/**
 * 角色已禁用异常
 */
class RoleDisabledException : RoleException(
    code = ROLE_DISABLED,
    message = "角色已被禁用"
)

/**
 * 角色正在使用中异常
 */
class RoleInUseException : RoleException(
    code = ROLE_IN_USE,
    message = "角色正在使用中，无法删除"
) 